package com.kongmou.webSocket.business;

import java.security.Principal;

import javax.annotation.Resource;

import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Controller;

@Controller
public class WSocketController {

	@Resource
	private SimpMessagingTemplate messageingTemplate;

	@MessageMapping("/welcome") // 类似于RequestMapping
	@SendTo("/topic/getResponse") // 当服务其中有消息是会向@SendTo路径的浏览器发送消息
	public WiselyResponse sayHello(WiselyMessage message) throws Exception {

		return new WiselyResponse("Welcome, " + message.getName() + "!");
	}

	@MessageMapping("/chat")
	// 在springmvc 中可以直接获得principal,principal 中包含当前用户的信息
	public void chat(Principal principal, String msg) {
		/**
		 * 此处是一段硬编码。如果发送人是wyf 则发送给 wisely 如果发送人是wisely 就发送给 wyf。
		 */
		if (principal.getName().equals("wyf")) {
			// 通过convertAndSendToUser 向用户发送信息,
			// 第一个参数是接收消息的用户,第二个参数是浏览器订阅的地址,第三个参数是消息本身
			messageingTemplate.convertAndSendToUser("wisely", "/queue/notifications",
					principal.getName() + "-send" + msg);
		} else {
			messageingTemplate.convertAndSendToUser("wyf", "/queue/notifications",
					principal.getName() + "-send:" + msg);
		}
	}

}
